package com.aatattoo.light_food_service.mapper;

import com.aatattoo.light_food_service.entity.Remind;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @Author aatattoo
 * @Date 2021/12/9 9:58 下午
 * @msg:
 */
@Mapper
@Repository
public interface RemindMapper {
    /**
     * 添加一个映射关系
     * @param remind #{activeId} 发起@行为的用户id
     *               #{passiveId} 被@的用户的id
     *               #{type} 类型（表单，评论，回复）
     *               #{parentID} 来源父组件的id（表单，评论，回复）
     *               #{order} 排序
     * @return
     */
    int addRemind(Remind remind);

    /**
     * 查找一个父组件下的全部@关联映射的信息
     * @param remind #{type}  类型
     *               #{parentID} 父组件Id
     * @return
     */
    List<Remind> getAllByParentId(Remind remind);

    /**
     * 获取当行数据的主键id值
     * @param remind #{type} 类型
     *               #{parentID} 父组件id
     *               #{passiveId} 被@的用户的id
     * @return
     */
    int getId(Remind remind);

    /**
     * 删除一行映射内容的id
     * @param id 映射表主键id
     * @return
     */
    int deleteById(@Param("id")int id);

    /**
     * 删除父组件下所有关联的组件id
     * @param remind
     * @return
     */
    int deleteByParentId(Remind remind);

    /**
     * 更新一条数据的排序内容
     * @param remind #{order} 排序
     *               #{id} 映射表主键id
     * @return
     */
    int updataOrder(Remind remind);

    /**
     * 获取@未查看信息数量
     * @param userId 被@用户的用户ID
     * @return
     */
    int countRemind(@Param("userId")int userId);

    /**
     * 获取所有用户被@的信息
     * @param userId
     * @return
     */
    List<Remind> findByPassive(@Param("userId")int userId);

    /**
     * 更新@用户的remind状态
     * @param userId
     * @return
     */
    int updataRemind(@Param("userId")int userId);


}
